package cn.ainit.sys.ui.controller;

import java.util.List;

import cn.ainit.sys.framework.entity.SysButtons;
import cn.ainit.sys.framework.entity.SysColumns;
import cn.ainit.sys.pages.config.entity.ConfigFunctions;
import cn.ainit.sys.pages.config.entity.ConfigObject;
import cn.ainit.sys.query.datastore.DataStore;
import cn.ainit.sys.query.entity.QueryButton;
import cn.ainit.sys.query.entity.QueryColumn;
import cn.ainit.sys.ui.buttons.FormButtons;
import cn.ainit.sys.ui.entity.SelectOptions;
import cn.ainit.sys.ui.entity.UIObject;
import cn.ainit.sys.ui.forms.Columns;

public interface UIService {
	/***
	 * 表单的字段
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	List<Columns> getColumnsById(String dsId) throws Exception;
	/***
	 * 表单的按钮
	 * @param formType
	 * @return
	 * @throws Exception
	 */
	List<FormButtons> findAllButtons(String formType) throws Exception;
	/**
	 * 获取查询界面的按钮
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	List<QueryButton> getQueryButns(String dsId) throws Exception;
	/***
	 * 相似数据
	 * @param tableName
	 * @param columnName
	 * @param str 
	 * @return
	 * @throws Exception
	 */
	List<String> getSameInfoStr(String tableName, String columnName, String str) throws Exception;
	/**
	 * 添加uiColum列
	 * @param column
	 * @return
	 * @throws Exception
	 */
	boolean addColumns(Columns column) throws Exception;
	/**
	 * 添加UI按钮
	 * @param butns
	 * @return
	 * @throws Exception
	 */
	boolean addButns(SysButtons butns) throws Exception;
	/**
	 * 添加query的按钮
	 * @param queryButton
	 * @return
	 * @throws Exception
	 */
	boolean addQueryButns(QueryButton queryButton) throws Exception;
	/**
	 * 增加queryColumn
	 * @param queryCol
	 * @return
	 * @throws Exception
	 */
	boolean saveQueryCol(List<String> list,String dsid) throws Exception;
	/**
	 * 增加queryUIColumn
	 * @param list
	 * @param dsid
	 * @return
	 * @throws Exception
	 */
	boolean saveQueryUICol(List<String> list,String dsid) throws Exception;
	/**
	 * 保存sql
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	boolean saveDS(DataStore dataStore) throws Exception;
	/**
	 * 执行sql返回sql中查询的所有列
	 * @param sqlText
	 * @return
	 * @throws Exception
	 */
	List<String> callBackSql(String sqlText) throws Exception;
	/**
	 * 查询dataStore的列（在queryColumn中）
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	List<SysColumns> queryColumns(String dsId) throws Exception;
	/***
	 * 查询对象的title等信息
	 * @param objId
	 * @param string 
	 * @return
	 * @throws Exception
	 */
	UIObject findFormObjById(String objId, String string) throws Exception;
	/***
	 * 通过id获取datastore对象
	 * @param dsid
	 * @return
	 * @throws Exception
	 */
	DataStore getDataStoreById(String dsid) throws Exception;
	/***
	 * 获取下拉框参数
	 * @param sqlText
	 * @param showPK
	 * @param showName
	 * @param config 
	 * @param integer 
	 * @return
	 * @throws Exception
	 */
	Object querySelectOptions(String sqlText,String config, String showPK,
			String showName,  Integer integer) throws Exception;
	 /**
	  * 根据添加的sql查询出数据
	  * @param sqlText
	  * @return
	  * @throws Exception
	  */
	Object queryColBySql(String sqlText) throws Exception;
	/**
	 * 根据sql修改被改的数据
	 * @param sqlTex
	 * @return
	 * @throws Exception
	 */
	boolean updQueryCol(String sqlTex) throws Exception;
	/**
	 * 用实体类修改
	 * @param queryColumn
	 * @return
	 * @throws Exception
	 */
	boolean upQueryColn(Columns queryColumn) throws Exception;
	/**
	 * 用实体类修改
	 * @param QueryColumn
	 * @return
	 * @throws Exception
	 */
	boolean upQuCol(QueryColumn queryColumn) throws Exception;
	/**
	 * 查找界面对象
	 * @param configId
	 * @return
	 * @throws Exception 
	 */
	ConfigObject findConfigObj(String configId) throws Exception;
	/***
	 * 查找生成界面的生成方法
	 * @param funsId
	 * @return
	 * @throws Exception
	 */
	ConfigFunctions findConfigFunsById(String funsId)throws Exception;
	
	/***
	 * 更新对象
	 * @param sqlText
	 * @param valuesArr
	 * @param whereValue
	 * @return
	 * @throws Exception
	 */
	boolean updateObject(String sqlText, String[] valuesArr, String[] whereValue)throws Exception;
}
